package com.tjetc;

public class _12Homework2 {
    /*
        (1)有2个用户分别从同一个卡上取钱(总额：10000)
        (2)每次都取1000,当余额不足时，就不能取款了
        (3)不能出现超取现象=》线程同步问题
     */
    public static void main(String[] args) {
        //    我们要操作的数据是同一个
        Card card = new Card();

        // 开启两个线程操作同一个数据
        Thread thread = new Thread(card, "thread-1");
        Thread thread1 = new Thread(card, "thread-2");

        thread.start();
        thread1.start();
    }

}

class Card implements Runnable{
    private Integer money = 10000;

    @Override
    public void run() {
        while (true) {
            // 添加同步
            synchronized (this) {
                if (money <= 1000) {
                    System.out.println("余额不足");
                    break;
                }

                money -= 1500;
                System.out.println(Thread.currentThread().getName() + "取出1000, 剩余 = " + money);
            }

            try {
                // 在睡眠的过程中 是不会释放锁的 wait() 会释放
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }

    }
}


